#ifndef _GLOBAL_H_
#define _GLOBAL_H_

#include <CGAL/basic.h>
// standard includes
#include <CGAL/CORE_Expr.h>
#include <CGAL/CORE/Real.h>
#include <CGAL/Cartesian.h>
#include <CGAL/number_utils.h>
#include <iostream>
#include <fstream>
#include <list>
#include <vector>
#include <deque>
#include <sstream>
#include <cmath>
#include <string>
#include <cassert>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/Exact_predicates_exact_constructions_kernel_with_sqrt.h>
#include <CGAL/Delaunay_triangulation_2.h>
#include <CGAL/Voronoi_diagram_2.h>
#include <CGAL/Delaunay_triangulation_adaptation_traits_2.h>
#include <CGAL/Delaunay_triangulation_adaptation_policies_2.h>
#include <CGAL/Polygon_2.h>
#include <CGAL/Polygon_with_holes_2.h>
#include <CGAL/Ray_2.h>
#include <CGAL/Line_2.h>
//#include <CGAL/intersections.h>
#include <CGAL/HalfedgeDS_items_decorator.h>
#include <CGAL/HalfedgeDS_default.h>
#include <CGAL/Boolean_set_operations_2.h>
#include <CGAL/number_utils.h>
#include <CGAL/centroid.h>

// typedefs for defining the adaptor
//typedef CORE::Expr DOUBLE;

typedef CGAL::Lazy_exact_nt<CGAL::Gmpq > NT_EXACT;
typedef CGAL::Cartesian<NT_EXACT> K_EXACT;
typedef CGAL::Cartesian<double> K;
//typedef K_EXACT K;

//typedef CGAL::Exact_predicates_inexact_constructions_kernel                  K;
//typedef CGAL::Exact_predicates_exact_constructions_kernel                  K;
//typedef CGAL::Exact_predicates_exact_constructions_kernel_with_sqrt	K;
typedef K::FT								DOUBLE;
//typedef CORE::Expr DOUBLE;

typedef CGAL::Delaunay_triangulation_2<K>                                    DT;
typedef CGAL::Delaunay_triangulation_adaptation_traits_2<DT>                 AT;
typedef CGAL::Delaunay_triangulation_caching_degeneracy_removal_policy_2<DT> AP;
typedef CGAL::Voronoi_diagram_2<DT,AT,AP>                                    VD;
typedef CGAL::Polygon_2<K> 						Polygon;
typedef CGAL::Polygon_with_holes_2<K> 					Polygon_h;
typedef CGAL::Ray_2<K> Ray;
typedef CGAL::Line_2<K> Line;
typedef CGAL::Segment_2<K> 						Segment; 
typedef AT::Site_2                    					Site;
typedef AT::Point_2                   					Point;

typedef VD::Locate_result             					Locate_result;
typedef VD::Vertex_handle             					Vertex_handle;
typedef VD::Face_handle               					Face_handle;
typedef VD::Halfedge_handle           					Halfedge_handle;
typedef VD::Ccb_halfedge_circulator   					Ccb_halfedge_circulator;

 
#endif
